Stored procedures and user-defined functions are conventionally employed to augment the functional capabilities of database systems. Typically, stored procedures and user-defined functions are developed by programmers at database server platforms (i.e., computers). After they have been fully developed, they are stored in the database server platforms. The stored procedures and user-defined functions may then be invoked by database clients.
The development of procedures and user-defined functions at database server platforms potentially increases the workload at these platforms. Thus, it is often disadvantageous to develop stored procedures and user-defined functions at the database server platforms since such development may degrade system performance. This problem is exacerbated if many programmers are working at the database server platforms at the same time. Also, it is not always possible to develop stored procedures and user-defined functions at the database server computers, particularly when the same application must be deployed to multiple database servers.
One solution to this problem is to have the programmers develop the stored procedures and user-defined functions at database client platforms. This potentially decreases the workload at database server platforms, thereby improving system performance. According to this approach, however, programmers must manually distribute, build, and register the completed stored procedures and user-defined functions at the database server platforms. This can be a very difficult task, especially if there are many database server platforms (in some systems, there are hundreds or even thousands of database server platforms).
Also, distributing, building, and registering stored procedures and user-defined functions are very low-level tasks. To perform such tasks, the programmers must know the physical addresses of the database server platforms (typically, programmers only know the aliases of the database server platforms, where such aliases are abstract, user-friendly representations of the physical addresses), and the process for invoking the build and registration utilities (this may vary from platform to platform). Accordingly, this conventional solution is not ideal.